

import bpy

import engine.initLIB.load_dll as engineLib
import ctypes

from 全局控制.Node.节点和插座基类 import bl_节点基类

import 节点.Core.bl_Mesh as Mesh
import 节点.Core.bl_节点构建模板 as 网格操作






engineLib.flexCAPI.f_创建经纬球节点.restype = ctypes.c_bool






class C_Node_创建经纬球(bl_节点基类.C_Node_基类):
	bl_dname = 'bl_node_创建经纬球'
	bl_label = '创建经纬球'
	
	#m_名称 = bpy.props.StringProperty(update=f_update_创建网格参数)
	def init(self, context):
		super(C_Node_创建经纬球, self).f_init(context)
		
		self.inputs.new('C_Socket_I32', name='U')
		self.inputs.new('C_Socket_I32', name='V')
		self.inputs.new('C_Socket_F32', name='R')
		self.inputs.new('C_Socket_Vec3', name='位置')

		网格操作.f_创建网格插座(self, True)
		self.outputs.new('C_Socket_网格', name='网格')
		
		self.f_toCPP()
		
		self.inputs['U'].f_setData(16)
		self.inputs['V'].f_setData(8)
		self.inputs['R'].f_setData(1.0)
		
		
	def f_toCPP(self):
		是否更新 = engineLib.flexCAPI.f_创建经纬球节点(ctypes.c_wchar_p(self.id_data.name), ctypes.c_wchar_p(self.name), self.f_getPyObject());
		if 是否更新 :
			for s in self.inputs:
				s.f_update()
		#self.inputs['V'].f_update()
		#self.inputs['R'].f_update()

		

class C_NODE_MENU_创建经纬球(bpy.types.Operator):
	bl_idname = 'node.create_node_graphics_uv_shpere'
	bl_label = '创建经纬球'
	bl_options = {'REGISTER', 'UNDO'}
	def execute(operator, context):
		bpy.ops.node.add_node(type='C_Node_创建经纬球', use_transform=True)
		return {'FINISHED'}














class C_Node_同心圆图形(bl_节点基类.C_Node_基类):
	bl_dname = 'bl_node_同心圆图形'
	bl_label = '同心圆图形'
	
	#m_名称 = bpy.props.StringProperty(update=f_update_创建网格参数)
	def init(self, context):
		super(C_Node_同心圆, self).f_init(context)
		
		self.inputs.new('C_Socket_I32', name='圈数')
		#self.inputs.new('C_Socket_I32', name='间隔')
		self.inputs.new('C_Socket_F32', name='半径')
		self.inputs.new('C_Socket_Vec3', name='位置')

		网格操作.f_创建网格插座(self, True)
		self.outputs.new('C_Socket_网格', name='网格')
		
		self.f_toCPP()
		
		self.inputs['U'].f_setData(16)
		self.inputs['V'].f_setData(8)
		self.inputs['R'].f_setData(1.0)
		
		
	def f_toCPP(self):
		是否更新 = engineLib.flexCAPI.f_创建同心圆图形节点(ctypes.c_wchar_p(self.id_data.name), ctypes.c_wchar_p(self.name), self.f_getPyObject());
		if 是否更新 :
			for s in self.inputs:
				s.f_update()
		#self.inputs['V'].f_update()
		#self.inputs['R'].f_update()
		
class C_NODE_MENU_同心圆图形(bpy.types.Operator):
	bl_idname = 'node.create_node_graphics_concentric_circle'
	bl_label = '同心圆图形'
	bl_options = {'REGISTER', 'UNDO'}
	def execute(operator, context):
		bpy.ops.node.add_node(type='C_Node_创建经纬球', use_transform=True)
		return {'FINISHED'}













classes = (
	C_Node_创建经纬球,
	C_NODE_MENU_创建经纬球,
	
	C_Node_同心圆图形,
	C_NODE_MENU_同心圆图形,

)


def register():
	for c in classes:
		bpy.utils.register_class(c)
	#bpy.utils.register_classes_factory(C_物体辅助)

def unregister():
	for c in classes:
		bpy.utils.unregister_class(c)



